A Statically Verifiable Programming Model for Concurrent Object-Oriented Programs

نویسندگان

  • Bart Jacobs
  • Jan Smans
  • Frank Piessens
  • Wolfram Schulte
چکیده

Reasoning about multithreaded object-oriented programs is difficult, due to the non-local nature of object aliasing, data races, and deadlocks. We propose a programming model that prevents data races and deadlocks, and supports local reasoning in the presence of object aliasing and concurrency. Our programming model builds on the multithreading and synchronization primitives as they are present in current mainstream languages. Java or C# programs developed according to our model can be annotated by means of stylized comments to make the use of the model explicit. We show that such annotated programs can be formally verified to comply with the programming model. In other words, if the annotated program verifies, the underlying Java or C# program is guaranteed to be free from data races and deadlocks, and it is sound to reason locally about program behavior. We have implemented a verifier for programs developed according to our model in a custom build of the Spec# programming system, and have validated our approach on a case study.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Honing the Detection of Interference and Ready Dependence for Slicing Concurrent Java Programs∗

Despite the usefulness of program slicing as a software specialization and debugging tool and the popularity of concurrent object-oriented programming languages such as Java and C#, slicing techniques for these languages have yet to reach the same level of maturity as foundations and implementations of slicing for sequential languages such as C. In particular, efficiently calculating precise sl...

متن کامل

Object Types against Races

This paper investigates an approach for statically preventing race conditions in an object-oriented language. The setting of this work is a variant of Gordon and Hankin’s concurrent object calculus. We enrich that calculus with a form of dependent object types that enables us to verify that threads invoke and update methods only after acquiring appropriate locks. We establish that well-typed pr...

متن کامل

Declarative Concurrent Object-oriented Programming in Tempo++

This paper presents Tempo++, a high-level programming language designed for concurrent object-oriented applications. It is based on a new programming model combining logic programming, constraint solving and object-oriented programming in a uniform framework. Tempo++ is an object-oriented extension to the declarative concurrent programming language Tempo Gregory and Ramirez 95]. It includes ext...

متن کامل

On Concurrent Execution of Object{oriented Programs

In this paper, we introduce object{oriented programs as sets of communicating objects. We investigate possibilities for their concurrent execution, starting with a review of existing concurrent, object{oriented systems. Most of these systems introduce new programming{language features, forcing a programmer to control concurrency by hand. In contrast, we prefer automatic parallelization of progr...

متن کامل

Pruning Interference and Ready Dependence for Slicing Concurrent Java Programs∗ (Extended Version)

The problem of efficiently calculating precise slices of concurrent programs is challenging because it is difficult to statically reason about the dependences that arise when multiple threads perform interfering reads/writes on shared data. The use of heap-allocated data in such programs makes the task even more difficult due to problems associated with aliasing. Existing presentations of slici...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2006